package com.jietuo.class02;

import java.util.Stack;

/**
 * @author zhangx & jietuo_zx@163.com
 * @version 1.0
 * @date 2024/3/1
 * @description: 6，用栈结构实现队列结构
 * 使用两个栈，相互倒数据，这样就可以实现先进先出的队列结构了
 * 要注意的点：data向
 */
public class Code06_StackToQueue {

    public static class MyQueue<T> {
        private Stack<T> push;
        private Stack<T> pop;

        public MyQueue() {
            push = new Stack<T>();
            pop = new Stack<T>();
        }

        public void push(T data) {
            push.push(data);
        }

        public T pop() {
            // 往外出的时候，需要将push里面的数据全部都倒到pop栈里面,倒之前pop里面也必须是空的
            transformPushToPop();
            return pop.pop();
        }

        public void transformPushToPop() {
            if (!pop.isEmpty()) {
                return;
            }
            while (!push.empty()) {
                pop.push(push.pop());
            }
        }

    }
}
